package com.etc.notify;

/**
 * 自定义店员
 * 
 * @author Administrator
 *
 */
public class Employee {

    // 假设目前商品的库存为-1
    private int productCount = -1;

    // 生产商品信息(进货)
    public synchronized void setProduct(int productCount) {

        // /productCount!=-1 表示已经生产过了
        // 这里的productCount 应该是this.productCount
        if (this.productCount != -1) {
            // 等待
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

        // 不是直接做生产操作
        this.productCount = productCount;
        //
        System.out.println("生产者,生产setProduct完成 " + this.productCount);

        // 唤醒其他线程
        notifyAll();
    }

    // 获取商品信息(卖货)

    public synchronized int getProduct() {

        // 判断 productCount==-1 还没生产
        if (this.productCount == -1) {
            try {
                // 等待
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        // 消费完了
        int n = this.productCount;

        System.out.println("消费者,购买 getProduct:" + n);

        this.productCount = -1;
        // 唤醒
        notifyAll();
        return n;
    }

}